1. Field of the Invention
The present invention generally relates to configuring a computer system. More particularly, the present invention relates to configuring add-in cards and devices using a centralized, integrated configuration process.
2. Background of the Invention
When a user turns on a computer for the first time, the computer typically performs a setup routine. The purpose of the setup routine is to configure the computer to the particularities or preferences of the user. For example, the setup routine is used, in the context of a server, to specify the amount of system memory, size of the hard drive, number and type of processors, etc. and, in the context of a personal computer, to specify the type of keyboard (U.S., European, etc.) that has been connected to the chassis, the type of monitor, the type of modem, amount of system memory, configure the interrupts, setup the input/output (“I/O”) ports, and set various other parameters. Further, the setup routine can be re-run during a subsequent boot up, or other event, by pressing a predefined key or key sequence such as <F10> during the boot process to change or verify the configuration of the computer system.
The setup routine of early personal computers was implemented as an executable file stored on a floppy disk or hard disk drive. Specifically, disk-based setup was stored in an “inactive” partition on the hard disk. An inactive partition is a portion of the disk drive that is generally inaccessible to the user during normal operation, but can be accessed by invoking a particular procedure such as pressing <F10> during boot up as noted above. The inactive partition also has been referred to as a “hidden” partition to denote its generally inaccessible nature. Many computer users did not favor the use of hidden partitions, particularly hidden partition for storing the setup routine. These users were concerned about not having full control over the hidden partition, as they had with the active partitions.
An additional concern that users had with disk-based setup was the amount of disk space the setup routine occupied. The setup routine occupied disk space that otherwise could have been used for storing data and applications. Initially, disk-based setup routines occupied about 4 megabytes (“MB”), but recently setup routines have grown to occupy upwards of 20 MB of disk space. Although hard drive capacity also has grown, it still is desirable to free up as much space as possible for data and applications.
At least some computer manufacturers have replaced the hard disk implementation for setup with a ROM-based setup (“RBSU”). A “ROM” is a Read Only Memory device that has the capacity to store a certain number of bytes of data or executable code. Although the storage capacity varies from ROM to ROM, ROM devices typically are capable of storing much less information than hard disks or other types of fixed drives (e.g., CD ROMs).
Most personal computers include at least one ROM device referred to as the “BIOS ROM” or “system ROM.” BIOS stands for Basic Input/Output System and refers to a set of executable routines that the computer's microprocessor can execute to provide low level control over various input/output devices such as hard disk drives, CD ROM drives, keyboards, mouse, and floppy disk drives. The BIOS code generally is permanently stored in the system ROM.
The system ROM also contains initialization routines that are executed to boot the computer. The microprocessor executes these initialization routines which test and initialize system memory and various other devices in the computer system. When the boot up process begins, the microprocessor executes the initialization routines directly from the system ROM. That is, each instruction is fetched from the ROM and provided to the microprocessor for execution. In the latter stages of the boot process, after the system memory is initialized, the BIOS routines are copied to the main system memory (“RAM”) and are executed from system memory, instead of from the system ROM.
Once invoked, the RBSU configuration routine generally requires interaction between the user and the computer. The user, for example, may be prompted to configure serial and/or parallel ports, system passwords, recovery options, and the like. In addition, some types of computers, such as servers, have add-in cards such as system management cards (which provide system configuration, power management, etc.) that couple to the host system and that also must be configured. In conventional legacy systems, RBSU is not used to configure such other devices or cards. Instead, before or after running RBSU, the operator activates the configuration routine programmed into the add-in cards via whatever mechanism is provided for doing so for that particular card. Each card may have a unique way to activate the configuration routine provided thereon which, for obvious reasons, places an administrative burden on the operator. Further, such configuration entry methods typically require the operator to press a certain key or key sequence during the boot process. If, after configuring a card, the operator desires to change some aspect of the card's configuration, the operator disadvantageously must reboot the entire system.
Accordingly, an easier and more efficient mechanism to configure a computer and its add-in cards and devices is needed.